<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../data//jquery-3.6.0.js"></script>
</head>

<body>
    <script>
        /**
         * 
         * async，await
         * 它是把异步请求变成同步执行的.async放在最近函数外调用,返回的是promise对象
         * 
         * async 异步的 把同步改成异步 用于声明异步的 function
         * await 搭配 async 使用  用于等待一个异步方法执行完成。它返回一个 Promise 对象
         * 可以有多个 await 只能有一个 async  
         * 
         * 好处：调用依次发生的场景，可以通过链式的写法
         * 缺点：没有catch错误处理，需要用js原生的try,catch进行错误处理 
         * 
         * async，await 语法糖 ： generator 函数 迭代器
         * 
         *
         *
         **/


        //  使用 async
        // async function yang() {
        //     return "打印成功";
        // }


        //async返回的是promise对象 可以用promise方法调用结果
        // yang().then(res => {
        //     console.log('成功结果', res);
        // })

        //async搭配使用await

        // await的功能相当于代替promise中.then执行的内容。await 要的是异步执行的内容
        // async要放在await最近一个函数的外面
        // async function yang() {
        //     let res1 = await $.ajax({ url: '../data/prh1.json' }) //后面要的是异步的结果
        //     let res2 = await $.ajax({ url: '../data/prh2.json' }) //可以有多个 await
        //     console.log( '成功', res1, res2);
        // }
        // yang()


        //用async,await解决-ajax回调地狱问题
        //   async function getyang(){
        // 	 var a1= await axios('../data/prh1.json')  //{a:7}

        // 	 if(a1){//条件不满足,不执行
        // 		   var a2= await axios('../data/prh2.json')
        // 		   console.log('a2的',a2)
        // 	 }
        // 	 else{
        // 		   var a3= await axios('../data/prh1.json')
        // 		   console.log('a3的',a3)
        // 	 }
        // }
        // getyang() 


        //async，await的错误 把代码转为 同步的代码
        // 我们要 把 await 放到 try 中进行执行，如有异常，就使用catch 进行处理

        //同步执行遇到的问题 ： 上面代码报错，会停止执行，后续就不走了
        // console.log(a) //报错，影响后面代码执行

        //解决方案 
        // 1.异步 settimeout
        // setTimeout(() =>{
        //    console.log(a) //报错，影响后面代码执行
        // });
        // console.log("哈哈哈")

        //2.js原生里  提供了try{}catch(e){console.log(e)}  捕获未知错误

        // try{
        //     console.log(a) //报错，影响后面代码执行
        // }catch(e){
        // 	console.log(111,e)
        // 	// throw e
        // }
        // console.log('哈哈哈')

        //解决问题  js原生 try{放网络请求可能出错} catch{捕获错误}
        async function getA() {
            try {
                let res1 = await axios('../data/prh1.json')
                let res2 = await axios('../data/prh2.json')
                console.log(res1, res2)

            } catch (error) {
                console.log('捕捉错误，不影响号码代码', error.status);
            }

            //后边有代码也不会影响执行
            console.log('哈哈哈');
        }
        getA()










    </script>
</body>

</html>